{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Approximating the largest Lyapunov exponent of the Lorenz system using JAX's autodiff\n",
    "\n",
    "The Lorenz equations are a prototypical example of **deterministic chaos**. They\n",
    "are a system of three **nonlinear** ODEs\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{dx}{dt} &= \\sigma(y - x), \\\\\n",
    "\\frac{dy}{dt} &= x(\\rho - z) - y, \\\\\n",
    "\\frac{dz}{dt} &= xy - \\beta z.\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "The three variables can be combined into the state vector $u = (x, y, z) \\in\n",
    "\\mathbb{R}^3$. Assume we have an initial condition $u(0)$ and another one\n",
    "slightly next to it $\\tilde{u}(0)$. Hence, their difference is $\\delta u(0) =\n",
    "\\tilde{u}(0) - u(0)$. The maximum Lyapunov exponent $\\lambda$ describes how\n",
    "(exponentially) quickly the two trajectories diverge\n",
    "\n",
    "$$\n",
    "\\| \\delta u(t) \\| \\approx \\| \\delta u(0) \\| \\exp(\\lambda t).\n",
    "$$\n",
    "\n",
    "In this notebook, we will approximate $\\lambda$ for the Lorenz system under the\n",
    "original configuration $\\sigma = 10$, $\\rho = 28$ and $\\beta = 8/3$ (1) using a\n",
    "[Runge-Kutta 4\n",
    "simulator](https://github.com/Ceyron/machine-learning-and-simulation/blob/main/english/simulation_scripts/lorenz_simulator_numpy.ipynb)\n",
    "of time step size $\\Delta t = 0.01$. Let's call the discrete time stepper\n",
    "$\\mathcal{P}$ that advances from one time level $u^{[t]}$ to the next\n",
    "$u^{[t+1]}$. Then, we can approximate the largest Lyapunov exponent $\\lambda$\n",
    "by\n",
    "\n",
    "$$\n",
    "\\lambda \\approx \\frac{1}{T} \\sum_{t=0}^{T-1} \\log \\frac{\\|\\epsilon^{[t+1]}\\|_2}{\\|\\epsilon^{[t]}\\|_2},\n",
    "$$\n",
    "\n",
    "in which $\\epsilon^{[t]}$ is a perturbation that is integrated alongside the\n",
    "original trajectory and evolves using the system's Jacobian matrix\n",
    "\n",
    "$$\n",
    "\\frac{d\\epsilon}{dt} = J(u) \\epsilon.\n",
    "$$\n",
    "\n",
    "Leading to the following strategy:\n",
    "\n",
    "1. Draw a reasonable initial condition, e.g. $u^{[0]} = (1, 1, 1)$.\n",
    "2. Evolve the initial condition until it enters the chaotic attractor, e.g., by\n",
    "   using $5000$ time steps to get $u^{[5000]}$.\n",
    "3. Use the last state $u^{[5000]}$ as the \"warmed-up\" initial state $u^{[0]}\n",
    "   \\leftarrow u^{[5000]}$.\n",
    "4. Introduce a small perturbation $\\epsilon^{[0]}$, e.g., using random normal\n",
    "   noise with $\\epsilon_i \\propto \\mathcal{N}(0, 1)$, and normalize it to get\n",
    "   $\\epsilon^{[0]} \\leftarrow \\epsilon^{[0]}/\\|\\epsilon^{[0]}\\|_2$.\n",
    "5. Evolve $u^{[t]}$ via the Runge-Kutta 4 stepper $u^{[t+1]} =\n",
    "   \\mathcal{P}(u^{[t]})$. At the same time, at each time step $t$, compute the\n",
    "   Jacobian of the time stepper evaluated at the current state\n",
    "   $J_\\mathcal{P}(u^{[t]})$. Then, evolve the perturbation $\\epsilon^{[t]}$ via\n",
    "   the $\\epsilon^{[t+1]} = J_\\mathcal{P}(u^{[t]}) \\epsilon^{[t]}$. Re-normalize\n",
    "   $\\epsilon^{[t+1]} \\leftarrow \\epsilon^{[t+1]}/\\|\\epsilon^{[t+1]}\\|_2$\n",
    "   afterwards. (*)\n",
    "6. Do this for a certain number of time steps, e.g. $50000$, and record the\n",
    "   growth in the perturbation's norm $\\|\\epsilon^{[t]}\\|_2$.\n",
    "7. Approximate the Lyapunov exponent $\\lambda$ using the formula above.\n",
    "\n",
    "(*) Instead of instantiating the full (and oftentimes dense) Jacobian matrix\n",
    "$J_\\mathcal{P}(u^{[t]})$ at each time step, we can also employ a simple\n",
    "Jacobian-Vector product via `jax.jvp`.\n",
    "\n",
    "---\n",
    "\n",
    "(1) E. N. Lorenz, \"Deterministic Nonperiodic Flow\", Journal of the Atmospheric\n",
    "Sciences, 1963,\n",
    "https://journals.ametsoc.org/view/journals/atsc/20/2/1520-0469_1963_020_0130_dnf_2_0_co_2.xml"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jax\n",
    "import jax.numpy as jnp\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# jax.config.update(\"jax_enable_x64\", True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def lorenz_rhs(u, *, sigma, rho, beta):\n",
    "    x, y, z = u\n",
    "    x_dot = sigma * (y - x)\n",
    "    y_dot = x * (rho - z) - y\n",
    "    z_dot = x * y - beta * z\n",
    "    u_dot = jnp.array([x_dot, y_dot, z_dot])\n",
    "    return u_dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LorenzStepperRK4:\n",
    "    def __init__(self, dt=0.01, *, sigma=10, rho=28, beta=8/3):\n",
    "        self.dt = dt\n",
    "        self.sigma = sigma\n",
    "        self.rho = rho\n",
    "        self.beta = beta\n",
    "    \n",
    "    def __call__(self, u_prev):\n",
    "        lorenz_rhs_fixed = lambda u: lorenz_rhs(\n",
    "            u,\n",
    "            sigma=self.sigma,\n",
    "            rho=self.rho,\n",
    "            beta=self.beta,\n",
    "        )\n",
    "        k_1 = lorenz_rhs_fixed(u_prev)\n",
    "        k_2 = lorenz_rhs_fixed(u_prev + 0.5 * self.dt * k_1)\n",
    "        k_3 = lorenz_rhs_fixed(u_prev + 0.5 * self.dt * k_2)\n",
    "        k_4 = lorenz_rhs_fixed(u_prev + self.dt * k_3)\n",
    "        u_next = u_prev + self.dt * (k_1 + 2*k_2 + 2*k_3 + k_4)/6\n",
    "        return u_next"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "lorenz_stepper = LorenzStepperRK4()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "u_0 = jnp.ones(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array([1., 1., 1.], dtype=float32)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array([1.0125672, 1.2599177, 0.984891 ], dtype=float32)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lorenz_stepper(u_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def rollout(stepper, n, *, include_init: bool = False):\n",
    "    def scan_fn(u, _):\n",
    "        u_next = stepper(u)\n",
    "        return u_next, u_next\n",
    "\n",
    "    def rollout_fn(u_0):\n",
    "        _, trj = jax.lax.scan(scan_fn, u_0, None, length=n)\n",
    "\n",
    "        if include_init:\n",
    "            return jnp.concatenate([jnp.expand_dims(u_0, axis=0), trj], axis=0)\n",
    "\n",
    "        return trj\n",
    "\n",
    "    return rollout_fn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def rollout_with_growth(stepper, n):\n",
    "    def scan_fn(carry, _):\n",
    "        u, eps = carry\n",
    "        # u_next = stepper(u)\n",
    "        # jac = jax.jacfwd(stepper)(u)\n",
    "        # eps_next = jac @ eps\n",
    "        u_next, eps_next = jax.jvp(stepper, (u,), (eps,))\n",
    "\n",
    "        growth = jnp.linalg.norm(eps_next)\n",
    "        eps_next_normalized = eps_next / growth\n",
    "\n",
    "        carry_next = (u_next, eps_next_normalized)\n",
    "\n",
    "        return carry_next, (u_next, growth)\n",
    "    \n",
    "    def rollout_with_growth_fn(u_0, eps_0):\n",
    "        initial_carry = (u_0, eps_0 / jnp.linalg.norm(eps_0))\n",
    "\n",
    "        _, (trj, growth_trj) = jax.lax.scan(scan_fn, initial_carry, None, length=n)\n",
    "\n",
    "        return trj, growth_trj\n",
    "    \n",
    "    return rollout_with_growth_fn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "u_0_warmed = rollout(lorenz_stepper, 5000)(u_0)[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array([-11.736563,  -4.546872,  37.751724], dtype=float32)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u_0_warmed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "warmed_trj, growth_trj = rollout_with_growth(\n",
    "    lorenz_stepper,\n",
    "    500_000,\n",
    ")(u_0_warmed, jax.random.normal(jax.random.PRNGKey(12), (3,)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((500000, 3), (500000,))"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "warmed_trj.shape, growth_trj.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array(0.9082885, dtype=float32)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lyapunov_approximation = jnp.mean(jnp.log(growth_trj)) / lorenz_stepper.dt\n",
    "lyapunov_approximation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "log_growth_trj = jnp.log(growth_trj)\n",
    "cummean_log_growth_trj = jnp.cumsum(log_growth_trj) / jnp.arange(1, len(log_growth_trj)+1)\n",
    "lyapunov_approximation_trj = cummean_log_growth_trj / lorenz_stepper.dt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array([-5.916447  , -5.523846  , -5.129349  , ...,  0.90829945,\n",
       "        0.9082941 ,  0.9082885 ], dtype=float32)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lyapunov_approximation_trj"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Approximate Lyap Exponent')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAGwCAYAAACnyRH2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABS7ElEQVR4nO3deVxU5f4H8M8wzAwgmwuyKItiopgi6hWxTE0QN1zqmpk/JTVLr+SC5ZUyt27S5pZaZmWU3UQrs0UzRxKX3C4oLimuKIksKuqwOQwz5/eHcXQClYGZMyN83q8XrxfnOc955jtfnfx2zvM8IxMEQQARERFRPWdn7QCIiIiIbAGLIiIiIiKwKCIiIiICwKKIiIiICACLIiIiIiIALIqIiIiIALAoIiIiIgIA2Fs7AFtkMBhw+fJluLi4QCaTWTscIiIiqgZBEFBYWAgfHx/Y2Zl+34dFURUuX74MX19fa4dBRERENfDnn3+iefPmJl/HoqgKLi4uAG4n1dXV1axj63Q6bNu2DX379oVCoTDr2HQH8ywd5loazLN0mGtpWCLPGo0Gvr6+4r/jpmJRVIWKR2aurq4WKYqcnJzg6urKD5sFMc/SYa6lwTxLh7mWhiXzXNOpL5xoTURERAQWRUREREQAWBQRERERAWBRRERERASARRERERERABZFRERERABYFBEREREBYFFEREREBIBFEREREREAFkVEREREAFgUEREREQFgUUREREQEgEWR5LQ6PQyCtaMgIiKiv2NRJKFibTlC3/oN7x+VWzsUIiIi+hsWRRI6eKEAOr2A7BKZtUMhIiKiv2FRRERERAQWRUREREQAWBQRERERAWBRRERERASARRERERERABZFRERERABYFEmKC/GJiIhsF4siIiIiIrAoIiIiIgLAooiIiIgIAIsiIiIiIgBWLop27dqF6Oho+Pj4QCaTYdOmTfftv3HjRkRGRsLDwwOurq4IDw/Hr7/+WqnfypUrERAQAAcHB4SFheHgwYMWegdERERUV1i1KCouLkZISAhWrlxZrf67du1CZGQktmzZgrS0NPTu3RvR0dE4fPiw2Gf9+vWIi4vD3LlzcejQIYSEhCAqKgr5+fmWehtERERUB9hb88X79++P/v37V7v/0qVLjY4XLlyIH374AT/99BNCQ0MBAIsXL8aECRMwduxYAMCqVauwefNmrFmzBrNmzTJb7DUhk3FRPhERka2yalFUWwaDAYWFhWjUqBEAoKysDGlpaYiPjxf72NnZISIiAvv27bvnOFqtFlqtVjzWaDQAAJ1OB51OZ7Z4y8vLxd/NOS5VVpFf5tnymGtpMM/SYa6lYYk813ash7ooev/991FUVIRnnnkGAHD16lXo9Xp4enoa9fP09ERGRsY9x0lISMD8+fMrtW/btg1OTk5mi/fkdRkAOQBArVabbVy6N+ZZOsy1NJhn6TDX0jBnnktKSmp1/UNbFH399deYP38+fvjhBzRt2rRWY8XHxyMuLk481mg08PX1Rd++feHq6lrbUEXOZ65iVcYhAEBkZCQUCoXZxiZjOp0OarWaeZYAcy0N5lk6zLU0LJHniic9NfVQFkVJSUl44YUX8M033yAiIkJsb9KkCeRyOfLy8oz65+XlwcvL657jqVQqqFSqSu0KhcKsHwi5XG6xsalqzLN0mGtpMM/SYa6lYc4813ach26fonXr1mHs2LFYt24dBg4caHROqVSic+fOSE5OFtsMBgOSk5MRHh4udahERET0ELHqnaKioiKcPXtWPM7MzER6ejoaNWoEPz8/xMfHIzs7G19++SWA24/MYmJisGzZMoSFhSE3NxcA4OjoCDc3NwBAXFwcYmJi0KVLF3Tt2hVLly5FcXGxuBrNmrj6jIiIyHZZtShKTU1F7969xeOKeT0xMTFITExETk4OsrKyxPOrV69GeXk5Jk+ejMmTJ4vtFf0BYMSIEbhy5QrmzJmD3NxcdOzYEVu3bq00+ZqIiIjoblYtinr16gVBEO55vqLQqZCSklKtcWNjYxEbG1uLyIiIiKi+eejmFBERERFZAosiIiIiIrAoIiIiIgLAooiIiIgIAIsiSXFBPhERke1iUUREREQEFkVEREREAFgUSereOzIRERGRtbEoIiIiIgKLIiIiIiIALIokxdVnREREtotFERERERFYFBEREREBYFFEREREBIBFEREREREAFkVEREREAFgUEREREQFgUSQpGdfkExER2SwWRURERERgUUREREQEgEUREREREQAWRUREREQAWBQRERERAWBRRERERASARRERERERABZFRERERABYFBEREREBYFFEREREBIBFEREREREAFkVEREREAFgUSUoGfiMsERGRrWJRRERERAQWRUREREQAWBQRERERAWBRRERERASARRERERERACsXRbt27UJ0dDR8fHwgk8mwadOm+/bPycnBc889h9atW8POzg7Tpk2r1CcxMREymczox8HBwTJvwEQyLj4jIiKyWVYtioqLixESEoKVK1dWq79Wq4WHhwdmz56NkJCQe/ZzdXVFTk6O+HPx4kVzhVwrgmDtCIiIiOhe7K354v3790f//v2r3T8gIADLli0DAKxZs+ae/WQyGby8vGodHxEREdUfVi2KLKWoqAj+/v4wGAzo1KkTFi5ciHbt2t2zv1arhVarFY81Gg0AQKfTQafTmS2ucn25+Ls5x6XKKvLLPFsecy0N5lk6zLU0LJHn2o5V54qioKAgrFmzBh06dMDNmzfx/vvvo3v37vjjjz/QvHnzKq9JSEjA/PnzK7Vv27YNTk5OZovt1A0ZADkAQK1Wm21cujfmWTrMtTSYZ+kw19IwZ55LSkpqdX2dK4rCw8MRHh4uHnfv3h1t27bFxx9/jDfffLPKa+Lj4xEXFyceazQa+Pr6om/fvnB1dTVbbG7nruHDk2kAgMjISCgUCrONTcZ0Oh3UajXzLAHmWhrMs3SYa2lYIs8VT3pqqs4VRX+nUCgQGhqKs2fP3rOPSqWCSqWq8lpzfiDs5XfSbe6xqWrMs3SYa2kwz9JhrqVhzjzXdpw6v0+RXq/HsWPH4O3tbe1QuCSfiIjIhln1TlFRUZHRHZzMzEykp6ejUaNG8PPzQ3x8PLKzs/Hll1+KfdLT08Vrr1y5gvT0dCiVSgQHBwMAFixYgG7duqFVq1a4ceMG3nvvPVy8eBEvvPCCpO+NiIiIHi5WLYpSU1PRu3dv8bhiXk9MTAwSExORk5ODrKwso2tCQ0PF39PS0vD111/D398fFy5cAABcv34dEyZMQG5uLho2bIjOnTtj7969YtFEREREVBWrFkW9evWCcJ8dDRMTEyu13a8/ACxZsgRLliypbWhERERUz9T5OUVERERE1cGiiIiIiAg1KIrGjRuHwsLCSu3FxcUYN26cWYIiIiIikprJRdEXX3yB0tLSSu2lpaVGq8SoMq7IJyIisl3Vnmit0WggCAIEQUBhYSEcHBzEc3q9Hlu2bEHTpk0tEiQRERGRpVW7KHJ3d4dMJoNMJkPr1q0rnZfJZFV+fxgRERHRw6DaRdGOHTsgCAKefPJJfPfdd2jUqJF4TqlUwt/fHz4+PhYJsq64/2YCREREZE3VLop69uwJ4Pau076+vrCz48I1IiIiqjtM3rzR398fN27cwMGDB5Gfnw+DwWB0fsyYMWYLjoiIiEgqJhdFP/30E0aNGoWioiK4urpCdte3nMpkMhZF98HVZ0RERLbL5GdgM2bMwLhx41BUVIQbN27g+vXr4k9BQYElYiQiIiKyOJOLouzsbEyZMgVOTk6WiIeIiIjIKkwuiqKiopCammqJWIiIiIisxuQ5RQMHDsSrr76KEydOoH379lAoFEbnBw8ebLbgiIiIiKRiclE0YcIEAMCCBQsqnZPJZNDr9bWPioiIiEhiJhdFf1+CT0RERFQX1GoHxlu3bpkrjvqBa/KJiIhslslFkV6vx5tvvolmzZrB2dkZ58+fBwC88cYb+Oyzz8weIBEREZEUTC6K3nrrLSQmJuLdd9+FUqkU2x999FF8+umnZg2OiIiISComF0VffvklVq9ejVGjRkEul4vtISEhyMjIMGtwRERERFKp0eaNrVq1qtRuMBig0+nMEhQRERGR1EwuioKDg7F79+5K7d9++y1CQ0PNEhQRERGR1Exekj9nzhzExMQgOzsbBoMBGzduxKlTp/Dll1/i559/tkSMRERERBZn8p2iIUOG4KeffsL27dvRoEEDzJkzBydPnsRPP/2EyMhIS8RIREREZHEm3ykCgB49ekCtVps7FiIiIiKrqVFRBABlZWXIz8+vtMO1n59frYMiIiIikprJRdGZM2cwbtw47N2716hdEAR+9xkRERE9tEwuip5//nnY29vj559/hre3N2QyfncFERERPfxMLorS09ORlpaGNm3aWCIeIiIiIquo0T5FV69etUQsdZ6M3whLRERks0wuit555x3MnDkTKSkpuHbtGjQajdEPERER0cPI5MdnERERAIA+ffoYtXOiNRERET3MTC6KduzYYYk4iIiIiKzK5KKoZ8+eloiDiIiIyKpqtHnjjRs38Nlnn+HkyZMAgHbt2mHcuHFwc3Mza3B1mSAI1g6BiIiI7mLyROvU1FQEBgZiyZIlKCgoQEFBARYvXozAwEAcOnTIEjHWGdzSiYiIyHaZXBRNnz4dgwcPxoULF7Bx40Zs3LgRmZmZGDRoEKZNm2bSWLt27UJ0dDR8fHwgk8mwadOm+/bPycnBc889h9atW8POzu6er/fNN9+gTZs2cHBwQPv27bFl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V+VrDB8+HKWlpWjZsiUmTJiA77//HuXl5feN68iRI0hMTDR6jaioKBgMBmRmZor9wsPDja4LDw/HyZMnTc4DEUmDE62JyGYpFAqjY5lMVmWbwWAAABQVFUEulyMtLQ1yudyo392F1N18fX1x6tQpbN++HWq1Gv/617/w3nvvYefOnZVeq0JRURFeeuklce7R3fz8/Kr9/ojItrAoIiLJKZVKo8nR5hIaGgq9Xo/8/Hz06NGj2tc5OjoiOjoa0dHRmDx5Mtq0aYNjx46hU6dOVcbaqVMnnDhxAq1atbrvuPv376903LZt2+q/ISKSFIsiIpJcQEAADhw4gAsXLsDZ2RmNGjUyy7itW7fGqFGjMGbMGCxatAihoaG4cuUKkpOT0aFDBwwcOLDSNYmJidDr9QgLC4OTkxO++uorODo6wt/fX4x1165dePbZZ6FSqdCkSRP8+9//Rrdu3RAbG4sXXngBDRo0wIkTJ6BWq7FixQpx7N9//x3vvvsuhg4dCrVajW+++QabN282y3slIvPjnCIiktwrr7wCuVyO4OBgeHh4ICsry2xjf/755xgzZgxmzJiBoKAgDB06FP/73//u+VjL3d0dn3zyCR577DF06NAB27dvx08//YTGjRsDABYsWIALFy4gMDAQHh4eAIAOHTpg586dOH36NHr06IHQ0FDMmTMHPj4+RmPPmDEDqampCA0NxX/+8x8sXrwYUVFRZnuvRGReMkEQBGsHQURU1wQEBGDatGmVdu4mItvFO0VEREREYFFEREREBICPz4iIiIgA8E4REREREQAWRUREREQAWBQRERERAWBRRERERASARRERERERABZFRERERABYFBEREREBYFFEREREBAD4f6zq86mJl5VdAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lyapunov_approximation_trj[2000:])\n",
    "plt.grid()\n",
    "plt.xlabel(\"time step\")\n",
    "plt.ylabel(\"Approximate Lyap Exponent\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "TRUE_LYAPUNOV_EXPONENT = 0.9056\n",
    "diff = jnp.abs(lyapunov_approximation_trj - TRUE_LYAPUNOV_EXPONENT)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Absolute error from the true Lyap Exponent')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAGwCAYAAABM/qr1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkm0lEQVR4nO3deVhU5dsH8O8M+yIgyiLI5oqogCuiuS8opqm9ZWm5pVlpWqilP3PPJU3T1LRya9eysnJLRMUl01xwF0VxF1AR2WSbOe8fwMgwA8yBMwvw/VyX18U855kzN48Dc/OsMkEQBBARERER5MYOgIiIiMhUMDEiIiIiKsDEiIiIiKgAEyMiIiKiAkyMiIiIiAowMSIiIiIqwMSIiIiIqIC5sQMwdUqlEvfu3UONGjUgk8mMHQ4RERHpQBAEpKWlwcPDA3K57v1ATIzKcO/ePXh5eRk7DCIiIiqH27dvo27dujrXZ2JUhho1agDIb1gHBwfJ7pubm4s9e/agV69esLCwkOy+pIltbRhsZ8NgOxsG29kw9NnOqamp8PLyUn2O64qJURkKh88cHBwkT4xsbW3h4ODAHzo9Y1sbBtvZMNjOhsF2NgxDtLPYaTCcfE1ERERUgIkRERERUQEmRkREREQFmBgRERERFWBiRERERFSAiRERERFRASZGRERERAWYGBEREREVYGJEREREVICJEREREVEBJkZEREREBZgYERERERVgYmQkD9OzkZwNZGTnGTsUIiIiKsDEyEim/Hoec06ZY++lJGOHQkRERAWYGBEREREVYGJEREREVICJEREREVEBJkZEREREBZgYERERERVgYkRERERUgIkRERERUQEmRkREREQFmBgRERERFWBiRERERFSAiRERERFRASZGRiYYOwAiIiJSYWJEREREVICJEREREVEBJkZGIjN2AERERKSBiRERERFRASZGRERERAWYGBEREREVEJ0Y3bp1C4KguchcEATcunVLkqCIiIiIjEF0YuTn54cHDx5olCcnJ8PPz0+SoIiIiIiMQXRiJAgCZDLNNVXp6emwtraWJCgiIiIiYzDXtWJERAQAQCaTYcaMGbC1tVVdUygUOHbsGIKDgyUPkIiIiMhQdE6MTp8+DSC/x+jcuXOwtLRUXbO0tERQUBAmT54sfYREREREBqJzYrR//34AwMiRI7FixQo4ODjo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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.semilogy(diff)\n",
    "plt.grid()\n",
    "plt.xlabel(\"time step\")\n",
    "plt.ylabel(\"Absolute error from the true Lyap Exponent\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
